const arr =[1,2,3,4]

// Array.prototype.my_forEach=function(callback){
//     for(let i=0;i<this.length;i++){
//         callback(this[i],i,this)
//     }
// }

// arr.my_forEach((item,index,array)=>{
//     console.log(item,index,array);
// })

// 实现map方法
Array.prototype.my_map=function(callback){
    let arr=[]
    for(let i=0;i<this.length;i++){
        arr.push(callback(this[i],i,this))
    }
    return arr
}

//filter
Array.prototype.my_filter=function(callback){
    let newArr=[]
    for(let i =0;i<this.length;i++){
        if(callback(this[i],i,this)){
            newArr.push(this[i])
        }
    }
    return newArr
}

//every
Array.prototype.myEvery=function(callback){
    for(let i =0;i<this.length;i++){
        if(!callback(this[i],i,this)){
            return false
        }
    }
    return true
}

//some
Array.prototype.mysom=function(callback,init){
    init !== undefined
}

//reduce
Array.prototype.myreduce=function(callbac,...arg){
    let pre,start=0;
    arg.length?pre=arg[0]:(pre=this[0],start =1)
    for(let i =start;i<this.length;i++){
        pre=callback(pre,this[i],i,this)
    }
    return pre
}